From a5f8f5d9681bf38c9c080cb4662bbac8eb743f84 Mon Sep 17 00:00:00 2001 From: robertl Date: Wed, 1 Jun 2011 00:54:54 +0000 Subject: [PATCH] Move document Lookat from bottom. Thiw was blessed by Google long ago, but it's technically incorrect, so we fixed it. git-svn-id: http://gpsbabel.googlecode.com/svn/trunk@4064 f51c46e8-681c-474f-0cfe-069cfd0219fb --- gpsbabel/kml.c | 27 ++++++++++++------- gpsbabel/reference/bounds-test.kml | 10 +++---- gpsbabel/reference/earth-expertgps-track.kml | 18 ++++++------- gpsbabel/reference/earth-expertgps.kml | 18 ++++++------- gpsbabel/reference/earth-gc.kml | 18 ++++++------- .../reference/track/bounds-test-track.kml | 10 +++---- .../track/gpx_garmin_extensions-kml_track.kml | 18 ++++++------- .../reference/track/gtrnctr_power-kml.kml | 18 ++++++------- .../track/segmented_tracks-track.kml | 18 ++++++------- gpsbabel/reference/track/segmented_tracks.kml | 18 ++++++------- 10 files changed, 91 insertions(+), 82 deletions(-) diff --git a/gpsbabel/kml.c b/gpsbabel/kml.c index 62b0667db..83634f114 100644 --- a/gpsbabel/kml.c +++ b/gpsbabel/kml.c @@ -772,11 +772,13 @@ static void kml_recompute_time_bounds(const waypoint *waypointp) { } } -static void kml_output_point(const waypoint *waypointp, kml_point_type pt_type) { - const char *style; - +static void kml_add_to_bounds(const waypoint *waypointp) { waypt_add_to_bounds(&kml_bounds, waypointp); kml_recompute_time_bounds(waypointp); +} + +static void kml_output_point(const waypoint *waypointp, kml_point_type pt_type) { + const char *style; switch (pt_type) { case kmlpt_track: style = "#track"; break; @@ -1087,8 +1089,6 @@ static void kml_waypt_pr(const waypoint *waypointp) kml_write_xml(-1, "\n"); } #endif - waypt_add_to_bounds(&kml_bounds, waypointp); - kml_recompute_time_bounds(waypointp); if (waypointp->gc_data->diff && waypointp->gc_data->terr) { kml_geocache_pr(waypointp); @@ -1287,9 +1287,6 @@ static void kml_mt_hdr(const route_head *header) char time_string[64]; waypoint *tpt = (waypoint *)elem; - // Add it to our bounding box so our default LookAt/flyto does a good - // thing. - waypt_add_to_bounds(&kml_bounds, tpt); if (tpt->creation_time) { xml_fill_in_time(time_string, tpt->creation_time, tpt->microseconds, XML_LONG_TIME); @@ -1390,6 +1387,17 @@ static void kml_route_tlr(const route_head *header) void kml_write_AbstractView(void) { double bb_size; + // Make a pass through all the points to find the bounds. + if (waypt_count()) { + waypt_disp_all(kml_add_to_bounds); + } + if (track_waypt_count()) { + track_disp_all(NULL, NULL, kml_add_to_bounds); + } + if (route_waypt_count()) { + route_disp_all(NULL, NULL, kml_add_to_bounds); + } + kml_write_xml(1, "\n"); if (kml_time_min || kml_time_max) { @@ -1488,6 +1496,8 @@ void kml_write(void) kml_write_xml(0, "Created %s\n", import_time); } + kml_write_AbstractView(); + // Style settings for bitmaps if (route_waypt_count()) { kml_write_bitmap_style(kmlpt_route, ICON_RTE, NULL); @@ -1593,7 +1603,6 @@ void kml_write(void) } } - kml_write_AbstractView(); kml_write_xml(-1, "\n"); kml_write_xml(-1, "\n"); } diff --git a/gpsbabel/reference/bounds-test.kml b/gpsbabel/reference/bounds-test.kml index 047143904..be7a15ad8 100644 --- a/gpsbabel/reference/bounds-test.kml +++ b/gpsbabel/reference/bounds-test.kml @@ -3,6 +3,11 @@ xmlns:gx="http://www.google.com/kml/ext/2.2"> GPS device + + -117.144015 + 36.438270 + 87257.203848 +